import asyncio
import time

now = lambda: time.time()

# 使用async 定义一个协程
async def do_some_work(x):
    print('Waiting: ', x)

# 协程对象不能直接运行，在注册事件循环的时候，其实是run_until_complete方法将协程包装成为了一个任务（task）对象。所谓task对象是Future类的子类。保存了协程运行后的状态，用于未来获取协程的结果。
if __name__ == '__main__':
    start = now()

    coroutine = do_some_work(2)  # coroutine 是一个协程
    loop = asyncio.get_event_loop()
    # task = asyncio.ensure_future(coroutine)
    task = loop.create_task(coroutine)
    print(task)
    loop.run_until_complete(task)
    print(task)
    print('TIME: ', now() - start)